package com.intct.hbase.ddl;

import com.intct.util.ConnectionHBaseUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

/**
 * @author gufg
 * @since 2025/6/13
 */
public class AlterTable {
    public static void main(String[] args) throws IOException {
        // 连接HBase
        Connection connection = ConnectionHBaseUtils.getConnection();

        // 获取admin实例
        Admin admin = connection.getAdmin();

        TableName tableName = TableName.valueOf("intct_80_api", "t4");

        try {
            // 判断表是否存在
            if (admin.tableExists(tableName)) {
                // 原表描述
                TableDescriptor oldTableDescriptor = admin.getDescriptor(tableName);

                // 新表描述与原表描述关联
                TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(oldTableDescriptor);

                // TODO 新增列族
                // 列族描述
//                ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("f2"));
//                columnFamilyDescriptorBuilder.setMaxVersions(5);
//                // 将列族描述放到表描述
//                tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());

                // TODO 修改列族
//                // 原列族信息
//                ColumnFamilyDescriptor oldColumnFamilyDescriptor = oldTableDescriptor.getColumnFamily(Bytes.toBytes("f2"));
//                // 列族描述
//                ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(oldColumnFamilyDescriptor);
//                columnFamilyDescriptorBuilder.setMaxVersions(3);
//
//                // 调用列族修改
//                tableDescriptorBuilder.modifyColumnFamily(columnFamilyDescriptorBuilder.build());
                
                // TODO 删除列族
                List<ColumnFamilyDescriptor> columnFamilyDescriptorList = Arrays.asList(oldTableDescriptor.getColumnFamilies());

                if (columnFamilyDescriptorList.contains("f2")) {
                    tableDescriptorBuilder.removeColumnFamily(Bytes.toBytes("f2"));
                } else {
                    System.out.println("列族信息不存！");
                }

                // 修改表
                admin.modifyTable(tableDescriptorBuilder.build());


            } else {
                System.out.println("表不存在！");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (admin != null) {
                admin.close();
            }
        }




    }
}
